package TheBlocksProblem101;


import java.util.Scanner;

public class Main {

    //private static Scanner consola = new Scanner("10\nmove 9 onto 1\nmove 8 over 1\nmove 7 over 1\nmove 6 over 1\npile 8 over 6" +
      //      "\npile 8 over 5\nmove 2 over 1\nmove 4 over 9\nquit");
    private static Scanner consola = new Scanner(System.in);
    private static Cubo cubos[],  cuboA,  cuboB;
    private static int a,  b,  cantidadDeCubos;
    private static String pri = "",  sec = "";

    public static void main(String args[]) {
        cantidadDeCubos = Integer.parseInt(consola.next());
        cubos = new Cubo[cantidadDeCubos];
        crearCubos(cubos);
        while (consola.hasNextLine()) {
            pri = consola.next();
            if (pri.compareTo("quit") == 0) {
                imprimir();
                System.exit(0);
            }
            a = Integer.parseInt(consola.next());
            sec = consola.next();
            b = Integer.parseInt(consola.next());
            if (!estanEnLaMismaPila() && a != b) {
                if (pri.compareTo("move") == 0) {
                    move();
                } else {
                    pile();
                }
            }
        }
    }

    private static Cubo buscarCubo(int num) {
        for (int i = 0; i < cubos.length; i++) {
            if (cubos[i] != null) {
                Cubo cubo = cubos[i];
                if (cubo.getNumero() == num) {
                    return cubo;
                }
                while (cubo.tieneCubosArriba()) {
                    cubo = cubo.getCuboSuperior();
                    if (cubo.getNumero() == num) {
                        return cubo;
                    }
                }
            }
        }
        return null;
    }

    private static Cubo buscarPila(int num) {
        for (int i = 0; i < cubos.length; i++) {
            if (cubos[i] != null) {
                Cubo cubo = cubos[i];
                if (cubo.getNumero() == num) {
                    while (cubo.tieneCubosArriba()) {
                        cubo = cubo.getCuboSuperior();
                    }
                    return cubo;
                } else {
                    while (cubo.tieneCubosArriba()) {
                        cubo = cubo.getCuboSuperior();
                        if (cubo.getNumero() == num) {
                            while (cubo.tieneCubosArriba()) {
                                cubo = cubo.getCuboSuperior();
                            }
                            return cubo;
                        }
                    }
                }
            }
        }
        return null;
    }

    private static void crearCubos(Cubo[] cubos) {
        for (int i = 0; i < cubos.length; i++) {
            cubos[i] = new Cubo(i);
        }
    }

    private static boolean estanEnLaMismaPila() {
        int ubi1 = -1, ubi2 = -1;

        for (int i = 0; i < cubos.length; i++) {
            if (cubos[i] != null) {
                Cubo cubo = cubos[i];
                if (cubo.getNumero() == a) {
                    ubi1 = i;
                }
                if (cubo.getNumero() == b) {
                    ubi2 = i;
                }
                while (cubo.tieneCubosArriba()) {
                    cubo = cubo.getCuboSuperior();
                    if (cubo.getNumero() == a) {
                        ubi1 = i;
                    }
                    if (cubo.getNumero() == b) {
                        ubi2 = i;
                    }
                }
            }
        }
        if (ubi1 == ubi2) {
            return true;
        }
        return false;
    }

    private static void imprimir() {
        String salida = "";
        for (int i = 0; i < cubos.length; i++) {
            Cubo cubo = cubos[i];
            salida += i + ":";
            if (cubo != null) {
                salida += " ";
                salida += cubo.getNumero();
                while (cubo.tieneCubosArriba()) {
                    salida += " ";
                    cubo = cubo.getCuboSuperior();
                    salida += cubo.getNumero();
                }
            }
                salida += "\n";
        }
        System.out.print(salida);
    }

    private static void move() {
        cuboA = buscarCubo(a);
        redistribuir(cuboA, true, true);
        if (sec.compareTo("onto") == 0) {
            cuboB = buscarCubo(b);
            redistribuir(cuboB, false, true);
            cuboA.setCuboInferior(cuboB);
            cuboB.setCuboSuperior(cuboA);
        } else {
            cuboB = buscarPila(b);
            cuboA.setCuboInferior(cuboB);
            cuboB.setCuboSuperior(cuboA);
        }
    }

    private static void pile() {
        cuboA = buscarCubo(a);
        redistribuir(cuboA, true, false);
        if (sec.compareTo("onto") == 0) {
            cuboB = buscarCubo(b);
            redistribuir(cuboB, false, true);
            cuboA.setCuboInferior(cuboB);
            cuboB.setCuboSuperior(cuboA);
        } else {
            cuboB = buscarPila(b);
            cuboA.setCuboInferior(cuboB);
            cuboB.setCuboSuperior(cuboA);
        }
    }

    private static void redistribuir(Cubo cubo, boolean redistribuirAbajo, boolean redistribuirArriba) {
        if (redistribuirAbajo) {
            if (cubo.tieneCubosAbajo()) {
                Cubo cuboInf = cubo.getCuboInferior();
                cuboInf.setCuboSuperior(null);
            } else {
                cubos[cubo.getNumero()] = null;
            }
            cubo.setCuboInferior(null);
        }
        while (cubo.tieneCubosArriba() && redistribuirArriba) {
            Cubo cuboSup = cubo.getCuboSuperior();
            cubos[cuboSup.getNumero()] = cuboSup;
            cuboSup.setCuboInferior(null);
            cubo.setCuboSuperior(null);
            cubo = cuboSup;
        }
    }
}

class Cubo {

    private Cubo cuboSuperior,  cuboInferior;
    private int numero;

    public Cubo(int num) {
        numero = num;
        cuboInferior = null;
        cuboSuperior = null;
    }

    public Cubo getCuboInferior() {
        return cuboInferior;
    }

    public void setCuboInferior(Cubo cuboInferior) {
        this.cuboInferior = cuboInferior;
    }

    public Cubo getCuboSuperior() {
        return cuboSuperior;
    }

    public void setCuboSuperior(Cubo cuboSuperior) {
        this.cuboSuperior = cuboSuperior;
    }

    public int getNumero() {
        return numero;
    }

    public boolean tieneCubosArriba() {
        if (cuboSuperior != null) {
            return true;
        }
        return false;
    }

    public boolean tieneCubosAbajo() {
        if (cuboInferior != null) {
            return true;
        }
        return false;
    }
}